// 考试练习 相关接口

// 获取token信息
function token() {
	// 初始化返回值
	var data_return = false;
	// 读取临时缓存
	var save_short = uni.$focus.varForever('get');
	// 如果数据存在
	if (save_short && save_short.token) { data_return = save_short.token; }
	// 不存在则提示
	else {
		uni.showToast({
			title: '您还未登录',
			icon: 'none',
			duration: 2500,
		});
	}
	// 返回数据
	return data_return;
}

export default {
	
	// 创建试卷
	testBuild: function (objC) {
		// 普通要传输的数据
		var mydata = Object.assign({
			teach_course_info_id: 0, // 课程id
			chapter_id: 0, // 小节id
		}, objC.data);
		
		// 是否有记录中的试卷
		uni.$focus.request({
			method: "post",
			url: '/aq_user/v2/paper/createPaper',
			data: mydata,
			loadingText: '生成试卷',
			header: {
				"token": token()
			},
			fail: (msgD) => {  if (objC.fail) { objC.fail(msgD); }  },
			success: (res) => {
				
				// 元素构造
				var yuanshu = {
					juanId: res.paper_id, // 卷子id
				};
				// 回调数据
				if (objC.success) { objC.success(yuanshu); }
				
			}
		});
		
	},
	
	// 获取题目
	testContentGet: function (objC) {
		
		// 普通要传输的数据
		var mydata = Object.assign({
			paper_id: 0, // 卷子id
		}, objC.data);
		
		// 请求试题信息
		uni.$focus.request({
			method: 'get',
			url: '/aq_user/v2/paper/getPaperQuestionList',
			data: mydata,
			loadingText: '请求试题信息',
			header: {
				"token": token()
			},
			openGreen: true,
			fail: (msg) => { if (objC.fail) { objC.fail(msg); } },
			success: (res) => {
				
				// 试题列表数据
				var list_yuan = res ? res : []; // 原数据
				var list_back = []; // 结果数据
				
				// 循环原始数据
				for (let i = 0; i < list_yuan.length; i++)
				{
					// 节点 - 一个试题对象
					let ele_ques = list_yuan[i];
					// 重构试题对象
					let obj_ques = {
						"key": "questionKey_" + ele_ques.id, // 循环key值
						index: i, // 循环下标
						localId: ele_ques.id, // 试题id(此张试卷)
						totalId: ele_ques.question_id, // 试题id(总题库)
						type: ele_ques.type, // 试题类型：1-单选  2-判断  3-多选
						order: ele_ques.order_number, // 标题序号
						title: ele_ques.title, // 标题文字
						myAnswer: ele_ques.answer_sort ? ele_ques.answer_sort.split(',') : [], // 自己作答的记录
						ansList: [], // 备选答案列表
					};
					
					// 备选答案列表数据(原数据)
					let ansarr_yuan = ele_ques.question_answer_list ? ele_ques.question_answer_list : [];
					// 循环原数据
					for (let j = 0; j < ansarr_yuan.length; j++)
					{
						// 节点 - 一个答案对象
						let ele_answer = ansarr_yuan[j];
						// 重构答案对象
						let obj_answer = {
							"key": "answerKey_" + ele_answer.id, // 循环key值
							index: j, // 循环下标
							ansId: ele_answer.id, // 答案id(总答案库)
							content: ele_answer.option ? ele_answer.option : '', // 答案显示文本
							sort: ele_answer.sort.toString(), // 答案有效值
						};
						// 将重构后的答案对象 添加到 备选答案列表
						obj_ques.ansList.push(obj_answer);
					}
					
					// 将重构后的试题对象 添加到 结果数组
					list_back.push(obj_ques);
					
				}
				
				// 回调数据
				var callback = {
					"list": list_back, // 试题数组
				};
				if (objC.success) { objC.success(callback); }
				
			}
		});
		
	},
	
	// 用户点击试题某个答案后 提交数据
	testAnswerSend: function (objC) {
		
		// 普通要传输的数据
		var mydata = Object.assign({
			"paper_id": 0, // 卷子id
			"fill_id": 0, // 试题id
			"sort": '', // 考生填写答案 多选题按照,分割 (1a 2b 3c 4d 5e)
		}, objC.data);
		
		// 请求数据
		uni.$focus.request({
			method: "post",
			url: '/aq_user/v2/paper/answer',
			data: mydata,
			loadingText: '正在提交选择',
			header: {
				"token": token()
			},
			openGreen: false,
			fail: (res) => { if (objC.fail) { objC.fail(res); } },
			success: (res) => { if (objC.success) { objC.success(res); } }
		});
		
	},
	
	// 生成考试试卷最终结果
	testResults: function (objC) {
		
		// 普通要传输的数据
		var mydata = Object.assign({
			paper_id: 0, // 卷子id
		}, objC.data);
		
		// 请求数据
		uni.$focus.request({
			method: "post",
			url: '/aq_user/v2/paper/submitPaper',
			data: mydata,
			loadingText: '请求试卷结果',
			header: {
				"token": token()
			},
			fail: () => { if (objC.fail) { objC.fail(); } },
			success: (res) => {
				
				// 考试结果基本信息
				var info_yuan = res; // 原始数据
				var info_back = {} // 结果数据
				// 数据重构
				info_back = {
					isThough: info_yuan.is_true==1 ? true : false, // 考试是否通过
					score: info_yuan.score ? info_yuan.score : 0, // 获得学分
				};
				
				// 做题正误显示列表
				var list_yuan = res.paper_info ? res.paper_info : []; // 原始数据
				var list_back = []; // 结果数据
				// 循环原始数据
				for (let i = 0; i < list_yuan.length; i++)
				{
					// 节点 - 一个题号对象
					let ele_ques = list_yuan[i];
					// 重构题号对象
					let obj_xu = {
						"key": 'orderKey_' + ele_ques.id, // 循环key值
						id: ele_ques.id, // 题号id
						order: ele_ques.order_number, // 显示序号
						isTrue: ele_ques.is_true==1 ? true : false, // 是否答对
					};
					// 将重构的对象 添加到 结果数组
					list_back.push(obj_xu);
				}
				
				// 回调数据封装
				var data_call = {
					"info": info_back,
					"list": list_back,
				};
				// 回调数据
				if (objC.success) { objC.success(data_call); }
				
			}
		});
		
	},
	
	// 获取试卷结果信息
	testPaperInfo: function (objC) {
		
		// 普通要传输的数据
		var mydata = Object.assign({
			paper_id: 0, // 卷子id
		}, objC.data);
		
		// 请求数据
		uni.$focus.request({
			method: "post",
			url: '/aq_user/v2/paper/getPaper',
			data: mydata,
			loadingText: '请求试卷结果',
			header: {
				"token": token()
			},
			fail: () => { if (objC.fail) { objC.fail(); } },
			success: (res) => {
				
				// 考试结果基本信息
				var info_yuan = res; // 原始数据
				var info_back = {} // 结果数据
				// 数据重构
				info_back = {
					isThough: info_yuan.is_true==1 ? true : false, // 考试是否通过
					score: info_yuan.score ? info_yuan.score : 0, // 获得学分
				};
				
				// 做题正误显示列表
				var list_yuan = res.paper_info ? res.paper_info : []; // 原始数据
				var list_back = []; // 结果数据
				// 循环原始数据
				for (let i = 0; i < list_yuan.length; i++)
				{
					// 节点 - 一个题号对象
					let ele_ques = list_yuan[i];
					// 重构题号对象
					let obj_xu = {
						"key": 'orderKey_' + ele_ques.id, // 循环key值
						id: ele_ques.id, // 题号id
						order: ele_ques.order_number, // 显示序号
						isTrue: ele_ques.is_true==1 ? true : false, // 是否答对
					};
					// 将重构的对象 添加到 结果数组
					list_back.push(obj_xu);
				}
				
				// 回调数据封装
				var data_call = {
					"info": info_back,
					"list": list_back,
				};
				// 回调数据
				if (objC.success) { objC.success(data_call); }
				
			}
		});
		
	},
	
};